// 引入 Vue 组件
import Vue from 'vue'
// 引入 Vuex 组件
// import Vuex from 'vuex'
// 引入 APP 入口组件
import App from './App.vue'
// 引入 Vue 路由
import router from './routes/router'
// 引入状态设置
import store from './store'
// 引入 Element UI 组件（js）
import ElementUI, { Message } from 'element-ui';
// 引入 Element UI 组件（css）
import 'element-ui/lib/theme-chalk/index.css';
// 引入 axios 请求数据
import axios from 'axios';
// 引入 Api 地址
import Global from './components/Common/Global.js';

// 引入阿里云第三方图标库
import './assets/icon/iconfont.css'
// 引入仓库模型
// import ProjectModel from './store/ProjectModel.js'
// const vuex_config = new Vuex.Store({
//   modules: {
//       project:ProjectModel
//   }
// });
// 使用 Vuex
// Vue.use(Vuex);
// 使用 Element UI
Vue.use(ElementUI);
Vue.prototype.$http = axios;
Vue.config.productionTip = false
//生产模式需要在main.js中关闭 ：Vue.config.productionTip = false ，作用是阻止 vue 在启动时生成生产提示。
// axios.defaults.withCredentials = true;

// axios.defaults.headers.post['Content-Type']= 'application/x-www-form-urlencoded;charset=UTF-8';// 配置请求头
Vue.prototype.$Global = Global;

// http request 拦截器
axios.interceptors.request.use(
    config => {
        if (localStorage.getItem('token')) { // 判断是否存在token，如果存在的话，则每个http header都加上token
            config.headers.Authorization = 'Bearer ' + localStorage.getItem('token')
        }
        // config.data = JSON.stringify(config.data)
        // config.headers = {
        //     'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
        // }
        return config;
    },

    err => {
        return Promise.reject(err);
    });

// http response 拦截器
axios.interceptors.response.use(
    response => {
        return response;
        
    },
    error => {
        if (error.response) {
            switch (error.response.status) {
                case 401:
                    // 返回 401 清除token信息并跳转到登录页面
                    Message({
                        type: 'warning',
                        message: '请重新登录！'
                    })
                    store.commit('setLogoutInfo')
                    store.commit('setRoute', router.currentRoute.fullPath);
                    router.push('/users/usershome/login');
            }
        }
        return Promise.reject(error.response) // 返回接口返回的错误信息
    });

// 创建 Vue 实例
new Vue({
    // 挂载 router 和 store
    router,
    store,
    // 渲染 App 入口组件，过载于 id=app 的元素
    render: h => h(App)
}).$mount('#app')